]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
UnlockDialog: go back to the lock screen automatically when idle
authorGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 16 Aug 2012 19:24:53 +0000 (21:24 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 16 Aug 2012 23:32:02 +0000 (01:32 +0200)
Now that GDM no longer emits auth failures after 25 seconds, we
need to handle inactivity ourselves.
This has also the advantage that it tracks real inactivity, rather
than a timeout from a fixed point in time.

https://bugzilla.gnome.org/show_bug.cgi?id=682041

js/ui/unlockDialog.js

index 8f2e6c2f6e26790ca7644b3d51010b00c01c3afc..c58263580f9ccb03a6c8a0d8086b6417938d6c98 100644 (file)
@@ -20,6 +20,9 @@ const UserMenu = imports.ui.userMenu;
 const Batch = imports.gdm.batch;
 const GdmUtil = imports.gdm.util;
 
+// The timeout before going back automatically to the lock screen (in seconds)
+const IDLE_TIMEOUT = 2 * 60;
+
 // A widget showing the user avatar and name
 const UserWidget = new Lang.Class({
     Name: 'UserWidget',
@@ -154,6 +157,11 @@ const UnlockDialog = new Lang.Class({
             this.emit('loaded');
             return false;
         }));
+
+        this._idleMonitor = Shell.IdleMonitor.get();
+        // this dialog is only created after user activity (curtain drag or
+        // escape key press), so the timeout will fire after IDLE_TIMEOUT seconds of inactivity
+        this._idleWatchId = this._idleMonitor.add_watch(IDLE_TIMEOUT * 1000, Lang.bind(this, this._escape));
     },
 
     _updateOkButton: function(sensitive) {
@@ -218,6 +226,12 @@ const UnlockDialog = new Lang.Class({
 
     destroy: function() {
         this._userVerifier.clear();
+
+        if (this._idleWatchId) {
+            this._idleMonitor.remove_watch(this._idleWatchId);
+            this._idleWatchId = 0;
+        }
+
         this.parent();
     },